home *** CD-ROM | disk | FTP | other *** search
/ Language/OS - Multiplatform Resource Library / LANGUAGE OS.iso / cocktail / front.lha / front / m2c / Rules.h < prev    next >
C/C++ Source or Header  |  1992-08-18  |  4KB  |  60 lines

  1. #define DEFINITION_Rules
  2.  
  3. #ifndef DEFINITION_Lists
  4. #include "Lists.h"
  5. #endif
  6.  
  7. #ifndef DEFINITION_TokenTab
  8. #include "TokenTab.h"
  9. #endif
  10.  
  11. #ifndef DEFINITION_Idents
  12. #include "Idents.h"
  13. #endif
  14.  
  15. #define Rules_Plus    0
  16. #define Rules_Star    1
  17. #define Rules_Optional    2
  18. #define Rules_Bracket    3
  19. #define Rules_Sequence    4
  20. #define Rules_Separator    5
  21. #define Rules_Alternative    6
  22. #define Rules_ArtAlternative    7
  23. #define Rules_Action    8
  24. #define Rules_TermLeaf    9
  25. #define Rules_NonTermLeaf    10
  26. #define Rules_NoOperation    11
  27. typedef unsigned char Rules_Operation;
  28. typedef Rules_Operation Rules_UnaryOperation;
  29. typedef Rules_Operation Rules_BracketOperation;
  30. typedef Rules_Operation Rules_BinaryOperation;
  31. typedef Rules_Operation Rules_ArtificialOperation;
  32. typedef Rules_Operation Rules_LeafOperation;
  33. typedef OPAQUE Rules_Expression;
  34. typedef OPAQUE Rules_MRules;
  35. extern Rules_Expression Rules_NoExpression;
  36. extern Rules_Expression Rules_MakeLeafNode ARGS((Idents_tIdent Sym, TokenTab_PosType Pos));
  37. extern Rules_Expression Rules_MakeActionNode ARGS((Lists_tList Act, TokenTab_PosType Pos));
  38. extern Rules_Expression Rules_MakeUnaryNode ARGS((Rules_UnaryOperation Art, TokenTab_PosType Pos, Rules_Expression Son));
  39. extern Rules_Expression Rules_MakeBracketNode ARGS((Rules_BracketOperation Art, TokenTab_PosType Pos, TokenTab_PosType SecPos, Rules_Expression Son));
  40. extern Rules_Expression Rules_MakeBinaryNode ARGS((Rules_BinaryOperation Art, TokenTab_PosType Pos, Rules_Expression LSon, Rules_Expression RSon));
  41. extern Rules_Expression Rules_MakePrioAlternativeNode ARGS((TokenTab_PosType Pos, Rules_Expression LSon, Rules_Expression RSon, BOOLEAN HasPrio, TokenTab_PosType PRIOPos, Idents_tIdent PrioSym, TokenTab_PosType PrioSymPos));
  42. extern void Rules_AppendArtificialNode ARGS((TokenTab_PosType Pos, TokenTab_PosType SecPos, Rules_Expression *Expr, Rules_Expression New));
  43. extern void Rules_PutNodeSpecial ARGS((Rules_Expression Exp, ADDRESS Spec));
  44. extern void Rules_MakeRule ARGS((Idents_tIdent Left, TokenTab_PosType LeftPos, TokenTab_PosType ColonPos, Rules_Expression Right, Lists_tList Comment, TokenTab_PosType CommPos, TokenTab_PosType PointPos, BOOLEAN HasPrio, TokenTab_PosType PRIOPos, Idents_tIdent PrioSym, TokenTab_PosType PrioSymPos));
  45. extern void Rules_MakeRulesHeader ARGS((TokenTab_PosType RULESPos, Lists_tList Comment, TokenTab_PosType CommPos));
  46. extern void Rules_InitRulesReading ARGS(());
  47. extern Rules_Operation Rules_GetNodeOperation ARGS((Rules_Expression Exp));
  48. extern void Rules_GetLeafNode ARGS((Rules_Expression Exp, TokenTab_Vocabulary *Voc, TokenTab_PosType *Pos));
  49. extern void Rules_GetActionNode ARGS((Rules_Expression Expr, Lists_tList *Act, TokenTab_PosType *Pos));
  50. extern void Rules_GetUnaryNode ARGS((Rules_Expression Expr, TokenTab_PosType *Pos, Rules_Expression *Son));
  51. extern void Rules_GetBracketNode ARGS((Rules_Expression Expr, TokenTab_PosType *Pos, TokenTab_PosType *SecPos, Rules_Expression *Son));
  52. extern void Rules_GetBinaryNode ARGS((Rules_Expression Expr, TokenTab_PosType *Pos, Rules_Expression *LSon, Rules_Expression *RSon));
  53. extern void Rules_GetPrioAlternativeNode ARGS((Rules_Expression Expr, TokenTab_PosType *Pos, Rules_Expression *LSon, Rules_Expression *RSon, BOOLEAN *HasPrio, TokenTab_PosType *PRIOPos, Idents_tIdent *PrioSym, TokenTab_PosType *PrioSymPos));
  54. extern void Rules_GetArtificialNode ARGS((Rules_Expression Expr, TokenTab_PosType *Pos, TokenTab_PosType *SecPos, Rules_Expression *LSon, Rules_Expression *RSon));
  55. extern ADDRESS Rules_GetNodeSpecial ARGS((Rules_Expression Exp));
  56. extern BOOLEAN Rules_GetRule ARGS((TokenTab_NonTerminal *Left, TokenTab_PosType *LeftPos, TokenTab_PosType *ColonPos, Rules_Expression *Right, Lists_tList *Comment, TokenTab_PosType *CommPos, TokenTab_PosType *PointPos, BOOLEAN *HasPrio, TokenTab_PosType *PRIOPos, TokenTab_Terminal *PrioSym, TokenTab_PosType *PrioSymPos));
  57. extern BOOLEAN Rules_GetEssentialRule ARGS((TokenTab_NonTerminal *Left, Rules_Expression *Right, BOOLEAN *HasPrio));
  58. extern void Rules_GetRulesHeader ARGS((TokenTab_PosType *RULESPos, Lists_tList *Comment, TokenTab_PosType *CommPos));
  59. extern void BEGIN_Rules();
  60.